package com.mwy.springbootrabbitmq.mq.pro;

import java.util.ArrayList;
import java.util.List;

/**
 * 被观察者实例
 */
public class BeMonitoredImpl implements BeMonitored {

    //观察者数组
    private List<Monitor> monitors = new ArrayList<>();

    public void haveBreakfast() {
        //执行吃饭逻辑
        System.out.println("开始吃饭");
        //通知所有的观察者，被观察者的haveBreakfast方法被调用了
        notifyMonitors("被观察者开始吃饭了");
    }

    public void haveFun() {
        //执行娱乐操作
        System.out.println("开始娱乐");
        //通知所有的观察者，被观察者的haveFun方法被调用了
        notifyMonitors("被观察者开始娱乐了");
    }

    @Override
    public void addMonitor(Monitor monitor) {
        monitors.add(monitor);
    }

    @Override
    public void deleteMonitor(Monitor monitor) {
        monitors.remove(monitor);
    }

    @Override
    public void notifyMonitors(String context) {
        for(Monitor monitor : monitors){
            monitor.update(context);
        }
    }
}
